set dotenv-load := true
set shell := ["bash", "-euc"]
set windows-shell := ["powershell.exe", "-NoLogo", "-NoProfile", "-Command"]

# Show available recipes
default:
    @just --list

# Install workspace dependencies
init:
    pnpm install

# Check formatting
lint:
    pnpm format:check

# Format all source files
format:
    pnpm format

# Type check all workspace packages
typecheck:
    pnpm typecheck

# Run all tests
test:
    pnpm test

# Build Web and Electron workspace packages
build:
    pnpm build

# Run the Web development server
dev:
    pnpm dev

# Run Web and Electron together
dev-desktop:
    pnpm dev:desktop

# Pinned version used by all member-generation recipes.
repo_scaffold_version := "{{ cookiecutter._repo_scaffold_version }}"

# Add a typed workspace member through the pinned repo-scaffold release.
add-member name member_type="ts-lib":
    uvx --from "repo-scaffold=={{ cookiecutter._repo_scaffold_version }}" repo-scaffold add-member {% raw %}{{name}}{% endraw %} --type {% raw %}{{member_type}}{% endraw %} --project-path .

# Add a TypeScript library under packages/.
add-lib name:
    just add-member {% raw %}{{name}}{% endraw %} ts-lib


# Add a Vite-built TypeScript CLI under packages/.
add-cli name:
    just add-member {% raw %}{{name}}{% endraw %} ts-cli
# Deprecated package terminology retained for team muscle memory.
add-package name:
    just add-member {% raw %}{{name}}{% endraw %} ts-lib

# Preview a member generation without changing the workspace.
plan-member name member_type="ts-lib":
    uvx --from "repo-scaffold=={{ cookiecutter._repo_scaffold_version }}" repo-scaffold add-member {% raw %}{{name}}{% endraw %} --type {% raw %}{{member_type}}{% endraw %} --project-path . --dry-run
